<template>
  <div class="upload-wrapper">
    <UploadExcel :on-success="handleSuccess" />
  </div>
</template>

<script>
import { importBatch } from '@/api/employee'
export default {
  methods: {
    // handleSuccess(data) {
    //   console.log('header', data.header)
    //   console.log('results', data.results)
    // }
    async handleSuccess({ results, header }) {
      console.log('header', header)
      console.log('results', results)
      // 花裤衩封装的组件给出的返回数据:
      // const arr1 = [
      //   { 姓名: '高大山', 手机好: '13234455434' },
      //   { 姓名: '高小山', 手机好: '13456765676' }
      // ]
      // // 后端需要的接口 api 数据:
      // const arr2 = [
      //   { username: '高大山', mobile: '13234455434' },
      //   { username: '高小山', mobile: '13456765676' }
      // ]
      // 我们作为前端程序员, 对接组件和后端api, 需要中间进行数据的转换
      // 转完以后才能够想后端发 api 请求
      const data = results.map(item => {
        const userEn = {}
        // 从中文数据对象找到对应属性值,放入英文用户对象中
        // userEn.username = '高大山'
        userEn.username = item['姓名']
        userEn.workNumber = item['工号']
        userEn.mobile = item['手机号']

        // 对于时间的数据需要特殊处理
        // 1. 用网上拿过来的函数转成时间字符串格式
        // 2. new Date(字符串) 生成js时间对象
        userEn.timeOfEntry = new Date(this.formatExcelTime(item['入职日期']))
        userEn.correctionTime = new Date(this.formatExcelTime(item['转正日期']))
        return userEn
      })
      console.log('data', data)
      // 发请求
      // 传入data
      await importBatch(data)
      // 提示用户
      this.$message.success('导入成功')
      // 后退back
      this.$router.back()
    },
    // 网上找回来的转换 excel 日期的函数
    formatExcelTime(num, format = '-') {
      num = Number(num) // 强制类型转化，以防传来的值是字符串
      let millisecond = 0 // 转化后的毫秒数
      if (num > 60) {
        millisecond = (num - 25569) * 60 * 60 * 24 * 1000
      } else {
        millisecond = (num - 25568) * 60 * 60 * 24 * 1000
      }
      const date = new Date(millisecond) // 根据转化后的毫秒数获取对应的时间
      const yy = date.getFullYear()
      const mm = date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1
      const dd = date.getDate() < 10 ? '0' + date.getDate() : date.getDate()
      return yy + format + mm + format + dd // 返回格式化后的日期
    }
  }
}
</script>

<style lang="scss" scoped>
.upload-wrapper {
  margin-top: 200px;
}
</style>
